package stackAndQueue;

public class MinStack {
	//题目所给的最大压入压出操作量， 假设全部压栈至多MAX
	public static int MAX = 8001;
	public static int[] stackData = new int[MAX];
	public static int[] stackMin = new int[MAX];
	public static int size;//维护两个栈的长度， 因为是同步压入两个栈长度相同。
	public MinStack() {
		size = 0;
	}

	public void push(int val) {
		if(size==0 || val <= stackMin[size-1]) {
			stackMin[size] = val;
		}
		else {
			stackMin[size] = stackMin[size-1];
		}
		stackData[size++] = val;
	}
	//常规栈操作
	public void pop() {
		size--;
	}
	//常规栈操作
	public int top() {
		return stackData[size-1];
	}
	//获取最小值
	public int getMin() {
		return stackMin[size-1];
	}	
}
